<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
    <th:block th:include="include :: header('差错处理统计列表')" />
    <th:block th:include="include :: ztree-css" />
</head>
<body class="gray-bg">
     <div class="container-div">
        <div class="row">
            <div class="col-sm-12 search-collapse">
                <form id="formId">
                    <div class="select-list">
                        <ul>
                            <li class="select-time">
                                <p>工作日期：</p>
                                <input type="text" class="time-input" id="beginOperateDate" placeholder="开始" name="beginOperateDate" required/>
                                <span>-</span>
                                <input type="text" class="time-input" id="endOperateDate" placeholder="结束" name="endOperateDate" required/>
                            </li>
                            <li>
                                <p>机构号：</p>
                                <input type="text" name="orgCode" onclick="selectDeptTree()" placeholder="请选择"  id="treeId"/>
                            </li>
                            <li>
                                <p>统计方式：</p>
                                <select name="statType" id="statType">
                                    <option value="1">按子机构统计</option>
                                    <option value="2">按机构操作员统计</option>
                                </select>
                            </li>
                            <li>
                                <div class="form-group">
                                    <label class="col-sm-1 control-label">角色类型</label>
                                    <div class="col-sm-11">
                                        <label class="checkbox-inline check-box">
                                            <input type="checkbox" name="userRoles" value="ROLE0003">监督岗</label>
                                        <label class="checkbox-inline check-box">
                                            <input type="checkbox" name="userRoles" value="ROLE1005">监督主管岗</label>
                                        <label class="checkbox-inline check-box">
                                            <input type="checkbox" name="userRoles" value="ROLE0009">补录岗</label>
                                        <label class="checkbox-inline check-box">
                                        <input type="checkbox" name="userRoles" value="ROLE1003">预警岗</label>
                                        <label class="checkbox-inline check-box">
                                            <input type="checkbox" name="userRoles" value="ROLE1004">质检岗</label>
                                        <label class="checkbox-inline check-box"></label>
                                    </div>
                                </div>
                            </li>
                            <li>
                                <a class="btn btn-primary btn-rounded btn-sm" onclick="tableSearch()"><i class="fa fa-search"></i>&nbsp;搜索</a>
                                <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
                                <a class="btn btn-warning" onclick="exportData()"><i class="fa fa-download"></i> 导出 </a>
                            </li>
                        </ul>
                    </div>
                </form>
            </div>
            <div class="col-sm-12 select-table table-striped table table-bordered table-condensed">
                <table id="bootstrap-table" style="white-space:nowrap"></table>
            </div>
        </div>
    </div>
    <th:block th:include="include :: footer" />
     <th:block th:include="include :: ztree-js" />
    <script th:inline="javascript">
        var deptMap = [[${deptMap}]];
        var defaultOrg = [[${defaultOrg}]];
        var firstTitle = "监控工作量统计表";
        //第一行表头
        var firstHeadColumns = [{title : firstTitle,align : 'center',colspan : 12}];
        var prefix = ctx + "stat/paeaReportBusiness";
        var parentOrgCode = {field : 'parentOrgCode', title : '子机构号'};
        var parentOrgName = {field : 'parentOrgName', title : '子机构名'};
        var orgCode = {field : 'orgCode', title : '机构号'};
        var orgName = {field : 'orgName', title : '机构名'};
        var userCode = {field : 'userCode', title : '操作员号'};
        var userName = {field : 'userName', title : '操作员姓名'};
        var auditBatchNum = {field : 'auditBatchNum', title : '重点监控批次数'};
        var auditNum = {field : 'auditNum', title : '重点监控量'};
        var reAuditNum = {field : 'reAuditNum', title : '质量检查量'};
        var manualAuditNum = {field : 'manualAuditNum', title : '随机抽查量'};
        var createErrorNum = {field : 'createErrorNum', title : '风险创建数'};
        var dealErrorNum = {field : 'dealErrorNum', title : '风险处理量'};
        var delayDealNum = {field : 'delayDealNum', title : '未及时处理量'};
        var riskNum = {field : 'riskNum', title : '集中预警量'};
        var _columns = [firstHeadColumns,[orgCode,orgName,userCode,userName,auditBatchNum,auditNum,reAuditNum,manualAuditNum,createErrorNum,dealErrorNum,delayDealNum,riskNum]];
        var options = {
            url: prefix + "/list",
            showSearch: false,
            showRefresh: false,
            showToggle: false,
            showColumns: false,
            showExport:false,
            clickToSelect:true,
            singleSelect:true,
            rowStyle:_rowStyle,
            modalName: "差错处理统计",
            columns: _columns
        };
        $(function() {
            $.table.init(options);
        });
       function tableSearch(){
           if(!$.validate.form()){
               return;
           }
           debugger;
           options.url = prefix + "/query";
           //设置表头
           firstTitle = "监控工作量统计表";
           var titleOrgCode = $("#treeId").val();
           if(titleOrgCode==null||titleOrgCode==''){
               titleOrgCode = defaultOrg;
           }
           var titleOrgName = deptMap[titleOrgCode];
           titleOrgName = (titleOrgName==null||titleOrgName=='')?"":titleOrgName;
           if(($("#endOperateDate").val()==$("#beginOperateDate").val())){
               firstTitle = $("#beginOperateDate").val()+firstTitle;
           }else{
               firstTitle = $("#beginOperateDate").val()+"至"+$("#endOperateDate").val()+firstTitle;
           }
           firstTitle = titleOrgName+"("+titleOrgCode+")"+firstTitle;
           var statType = $('#statType option:selected').val();
           if(statType==1){
               options.onLoadSuccess = _mergeCells;
               var firstHeadColumns = [{title : firstTitle,align : 'center',colspan : 14}];
               _columns = [firstHeadColumns,[parentOrgCode,parentOrgName,orgCode,orgName,userCode,userName,auditBatchNum,auditNum,reAuditNum,manualAuditNum,createErrorNum,dealErrorNum,delayDealNum,riskNum]];
               options.columns = _columns;
           }else if(statType==2){
               options.onLoadSuccess = null;
               var firstHeadColumns = [{title : firstTitle,align : 'center',colspan : 12}];
               _columns = [firstHeadColumns,[orgCode,orgName,userCode,userName,auditBatchNum,auditNum,reAuditNum,manualAuditNum,createErrorNum,dealErrorNum,delayDealNum,riskNum]];
               options.columns = _columns;
           }
           $.table.destroy();
           _initTable(options);
       }
        function _mergeCells(data){
            var data = $('#bootstrap-table').bootstrapTable('getData', true);
            // 合并单元格
            var fieldList=["parentOrgCode","parentOrgName"];
            mergeCells(data, "parentOrgCode", 1, $('#bootstrap-table'),fieldList);
        }
        //选择机构
        function selectDeptTree() {
            var treeId = $("#treeId").val();
            var deptId = $.common.isEmpty(treeId) ? "00038" : $("#treeId").val();
            var url = ctx + "system/dept/selectDeptTree/" + deptId;
            var options = {
                title: '选择部门',
                width: "380",
                url: url,
                callBack: doSubmit
            };
            $.modal.openOptions(options);
        }
        function doSubmit(index, layero){
            var tree = layero.find("iframe")[0].contentWindow.$._tree;
            if ($.tree.notAllowParents(tree)) {
                var body = layer.getChildFrame('body', index);
                $("#treeId").val(body.find('#treeId').val());
                layer.close(index);
            }
        }
        function _rowStyle(row,index){
            var style = {};
            if(row.userCode=='小计'){
                style={css:{'color':'#FF0000',"font-weight":"600"}};
            }
            if(row.userCode=='合计'){
                style={css:{'color':'#FF0000',"font-weight":"600","font-size":"16px"}};
            }
            return style;
        }
    </script>
     <script th:inline="javascript">
         function exportData(){
             //导出数据
             $('#bootstrap-table').tableExport({
                 type: 'excel',
                 exportDataType: "all",
                 escape: 'false',
                 exportTypes:['excel'],
                 //ignoreColumn: [0,12],  //忽略某一列的索引
                 fileName: '监督工作量统计表',  //文件名称设置
                 worksheetName: 'sheet1',  //表格工作区名称
                 tableName: '监督工作量统计表'
                 //onMsoNumberFormat: doOnMsoNumberFormat,
                 //onCellHtmlData: DoOnCellHtmlData
             });
         }
         function _initTable(options) {
             var defaults = {
                 id: "bootstrap-table",
                 type: 0, // 0 代表bootstrapTable 1代表bootstrapTreeTable
                 height: undefined,
                 sidePagination: "server",
                 sortName: "",
                 sortOrder: "asc",
                 pagination: true,
                 pageSize: 10,
                 pageList: [10, 25, 50],
                 toolbar: "toolbar",
                 striped: false,
                 escape: false,
                 firstLoad: true,
                 showFooter: false,
                 search: false,
                 showSearch: true,
                 showPageGo: false,
                 showRefresh: true,
                 showColumns: true,
                 showToggle: true,
                 showExport: false,
                 clickToSelect: false,
                 mobileResponsive: true,
                 rememberSelected: false,
                 fixedColumns: false,
                 fixedNumber: 0,
                 rightFixedColumns: false,
                 rightFixedNumber: 0,
                 queryParams: $.table.queryParams,
                 rowStyle: {}
             };
             var options = $.extend(defaults, options);
             table.options = options;
             table.config[options.id] = options;
             $.table.initEvent();
             $('#' + options.id).bootstrapTable({
                 id: options.id,
                 url: options.url,                                   // 请求后台的URL（*）
                 contentType: "application/x-www-form-urlencoded",   // 编码类型
                 method: 'post',                                     // 请求方式（*）
                 cache: false,                                       // 是否使用缓存
                 height: options.height,                             // 表格的高度
                 striped: options.striped,                           // 是否显示行间隔色
                 sortable: true,                                     // 是否启用排序
                 sortStable: true,                                   // 设置为 true 将获得稳定的排序
                 sortName: options.sortName,                         // 排序列名称
                 sortOrder: options.sortOrder,                       // 排序方式  asc 或者 desc
                 pagination: options.pagination,                     // 是否显示分页（*）
                 pageNumber: 1,                                      // 初始化加载第一页，默认第一页
                 pageSize: options.pageSize,                         // 每页的记录行数（*）
                 pageList: options.pageList,                         // 可供选择的每页的行数（*）
                 firstLoad: options.firstLoad,                       // 是否首次请求加载数据，对于数据较大可以配置false
                 escape: options.escape,                             // 转义HTML字符串
                 showFooter: options.showFooter,                     // 是否显示表尾
                 iconSize: 'outline',                                // 图标大小：undefined默认的按钮尺寸 xs超小按钮sm小按钮lg大按钮
                 toolbar: '#' + options.toolbar,                     // 指定工作栏
                 sidePagination: options.sidePagination,             // server启用服务端分页client客户端分页
                 search: options.search,                             // 是否显示搜索框功能
                 searchText: options.searchText,                     // 搜索框初始显示的内容，默认为空
                 showSearch: options.showSearch,                     // 是否显示检索信息
                 showPageGo: options.showPageGo,               		// 是否显示跳转页
                 showRefresh: options.showRefresh,                   // 是否显示刷新按钮
                 showColumns: options.showColumns,                   // 是否显示隐藏某列下拉框
                 showToggle: options.showToggle,                     // 是否显示详细视图和列表视图的切换按钮
                 showExport: options.showExport,                     // 是否支持导出文件
                 uniqueId: options.uniqueId,                         // 唯 一的标识符
                 clickToSelect: options.clickToSelect,				// 是否启用点击选中行
                 mobileResponsive: options.mobileResponsive,         // 是否支持移动端适配
                 detailView: options.detailView,                     // 是否启用显示细节视图
                 onClickRow: options.onClickRow,                     // 点击某行触发的事件
                 onDblClickRow: options.onDblClickRow,               // 双击某行触发的事件
                 onClickCell: options.onClickCell,                   // 单击某格触发的事件
                 onDblClickCell: options.onDblClickCell,             // 双击某格触发的事件
                 onEditableSave: options.onEditableSave,             // 行内编辑保存的事件
                 onExpandRow: options.onExpandRow,                   // 点击详细视图的事件
                 rememberSelected: options.rememberSelected,         // 启用翻页记住前面的选择
                 fixedColumns: options.fixedColumns,                 // 是否启用冻结列（左侧）
                 fixedNumber: options.fixedNumber,                   // 列冻结的个数（左侧）
                 rightFixedColumns: options.rightFixedColumns,       // 是否启用冻结列（右侧）
                 rightFixedNumber: options.rightFixedNumber,         // 列冻结的个数（右侧）
                 onReorderRow: options.onReorderRow,                 // 当拖拽结束后处理函数
                 queryParams: options.queryParams,                   // 传递参数（*）
                 rowStyle: options.rowStyle,                         // 通过自定义函数设置行样式
                 columns: options.columns,                           // 显示列信息（*）
                 responseHandler: $.table.responseHandler,           // 在加载服务器发送来的数据之前处理函数
                 onLoadSuccess: $.table.onLoadSuccess,               // 当所有数据被加载时触发处理函数
                 buttonsAlign:"right",  //按钮位置
                 exportDataType: "all", //basic', 'all', 'selected'.
                 exportTypes:['xlsx','excel','doc'], //导出文件类型
                 Icons:'glyphicon glyphicon-export', //导出图标
                 exportOptions:{
                     //ignoreColumn: [0,12],  //忽略某一列的索引
                     fileName: '扫描补录员工作量统计表',  //文件名称设置
                     worksheetName: 'sheet1',  //表格工作区名称
                     tableName: '扫描补录员工作量统计表'
                     //onMsoNumberFormat: doOnMsoNumberFormat,
                     //onCellHtmlData: DoOnCellHtmlData,
                 },               // 前端导出忽略列索引
                 detailFormatter: options.detailFormatter          // 在行下面展示其他数据列表
             });
         }
         /**
          * 合并单元格
          *
          * @param data
          *            原始数据（在服务端完成排序）
          * @param fieldName
          *            合并参照的属性名称
          * @param colspan
          *            合并开始列
          * @param target
          *            目标表格对象
          * @param fieldList
          *            要合并的字段集合
          */
         function mergeCells(data,fieldName,colspan,target,fieldList){
             // 声明一个map计算相同属性值在data对象出现的次数和
             var sortMap = {};
             for(var i = 0 ; i < data.length ; i++){
                 for(var prop in data[i]){
                     //例如people.unit.name
                     var fieldArr=fieldName.split(".");
                     getCount(data[i],prop,fieldArr,0,sortMap);
                 }
             }
             var index = 0;
             for(var prop in sortMap){
                 var count = sortMap[prop];
                 for(var i = 0 ; i < fieldList.length ; i++){
                     $(target).bootstrapTable('mergeCells',{index:index, field:fieldList[i], colspan: colspan, rowspan: count});
                 }
                 index += count;
             }
         }
         /**
          * 递归到最后一层 统计数据重复次数
          * 比如例如people.unit.name 就一直取到name
          * 类似于data["people"]["unit"]["name"]
          */
         function getCount(data,prop,fieldArr,index,sortMap){
             if(index == fieldArr.length-1){
                 if(prop == fieldArr[index]){
                     var key = data[prop];
                     if(sortMap.hasOwnProperty(key)){
                         sortMap[key] = sortMap[key]+ 1;
                     } else {
                         sortMap[key] = 1;
                     }
                 }
                 return;
             }
             /*只有一层属性不进行递归
             if(prop == fieldArr[index]){
                 var sdata = data[prop];
                 index=index+1;
                 getCount(sdata,fieldArr[index],fieldArr,index,sortMap);
             }*/
         }
     </script>
</body>
</html>